home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 352_01 / feow.cpp < prev    next >
C/C++ Source or Header  |  1991-04-22  |  2KB  |  74 lines

  1. // FEOW.C - function to ask user "File Exists, Over Write?"
  2. //        PARAMS: char dir = directory name.         MUST HAVE strlen(dir) < MAXDIR
  3. //                char fn[8+1=3+1] = file name
  4. //
  5. //        User gets chance to change file name, so provide storage for 8+1+3+1
  6. //        RETURNS: ENTER or ESCAPE
  7. //
  8. #include <stdlib.h>
  9. #include <dir.h>
  10. #include <sys\stat.h>
  11. #include  <string.h>
  12. #include "wtwg.h"
  13. #include "dblib.h"
  14. int fe_ow ( char *dir, char *fn )
  15.     {
  16.     int key, len;
  17.     char  msg[200+MAXPATH], path[MAXPATH];
  18.     char  old_fn[8+1+3+1];
  19.     char  new_fn[8+1+3+1];
  20.     
  21.     
  22.     struct stat statbuf;    
  23.     memcpy ( old_fn, fn, sizeof(old_fn) );
  24.     old_fn[ sizeof(old_fn)-1 ] = 0;
  25.     
  26.     key = 0;
  27.     
  28.         
  29.     do    /* loop until old_fn has a  non-duplicate file or ESCAPE */
  30.         {
  31.         strcpy ( path, dir );
  32.         len = strlen (dir);
  33.         if ( len >0 && dir[len-1]!= '\\' )
  34.             {
  35.             /* make sure last char in dir is a \\
  36.              */
  37.             strcat ( path, "\\" );
  38.             }     
  39.         
  40.         strcat ( path, old_fn );
  41.     
  42.         if ( -1 ==stat ( path, &statbuf ) )
  43.             {
  44.             errno =0;
  45.             key = ENTER;    /* exits from loop */
  46.             }
  47.         else 
  48.             {
  49.             /* file was found - therefore must be a duplicate
  50.              */
  51.             sprintf ( msg,  "File named %s already exists"
  52.                             "in directory %s\n"
  53.                             "Re-Enter the file name, or ESCAPE to quit", fn, dir );
  54.             strcpy ( new_fn, old_fn );
  55.             wsetlocation ( WLOC_ATCUR, 2, 2 );        
  56.             key = wprompts ( " WARNING ", msg, new_fn, sizeof(new_fn) );
  57.             if (key==ENTER)
  58.                 {
  59.                 strcpy ( old_fn, new_fn );
  60.                 key = 0;    /* force repeat of loop to test new name */
  61.                 }    /* end if ENTER */
  62.             }    /* end else... file is duplicate */
  63.         }
  64.         while ( ! (key==ENTER || key == ESCAPE) );    /* until valid choice */
  65.  
  66.     if ( key == ENTER )
  67.         {
  68.         strcpy ( fn, old_fn );        /* give caller back unique filename */
  69.         }
  70.     
  71.     return (key);    /* fe_ow */
  72.     }
  73.     
  74. /*--------------------- end of FEOW.C -------------------------*/